package demo15;

// 懒汉模式
public class SingletonClass2 {
    private SingletonClass2(){}

    private static volatile SingletonClass2 instance = null;

    // 有人调用我们的 getInstance() 时，意味着有人用到这个对象了
    // 有人用到这个对象时，再实例化对象
    public static SingletonClass2 getInstance(){
        // 判断，对象是否实例化过
        if (instance == null) {
            // 只有在 instance == null 这里才需要保护
            synchronized (SingletonClass2.class) {
                if (instance == null) { // 二次判断机制
                    instance = new SingletonClass2();
                }
            }
        }
        return instance;
    }
}
